﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidades;
using System.Data.SqlClient;
using AccesoBD;
using System.Data;

namespace AccesoBD
{
    public class Afiliados
    {
        long nroAfiliado;

        public long BuscarNroAfiliadoTitular(long nroDoc, int tipo)
        {
            long nro=0;
            
            try
            {
                SqlConnection con = DB.Conectar();
                string comando = "SELECT Paciente.nroAfiliado, Persona.tipoDocumento, Persona.nroDocumento FROM  Paciente INNER JOIN Persona ON Paciente.idPersona = Persona.codPersona WHERE (Persona.tipoDocumento = @idTipoDoc) AND (Persona.nroDocumento = @nroDoc)";
                List<SqlParameter> lstParametros = new List<SqlParameter>();


                lstParametros.Add(new SqlParameter("@idTipoDoc", tipo));
                lstParametros.Add(new SqlParameter("@nroDoc", nroDoc ));

                SqlDataReader dr = DB.GenerarReader(comando, lstParametros, con);

                while (dr.Read())
                {
                    if (dr["nroAfiliado"].ToString() != null)
                        nro = Convert.ToInt64(dr["nroAfiliado"].ToString());
                    else nro = 0;
                }
                con.Close();

                return nro;
            }
            catch (Exception ex)
            {
                throw new Exception("No se encuentra titular !", ex);

            }

            
        }

        public Afiliacion BuscarNroAfiliadoTitularEidPlan(long nroDoc, int tipo)
        {
            bool bandera = true;

            Afiliacion af = new Afiliacion();

            SqlConnection con = DB.Conectar();
            string comando = "SELECT   * FROM Persona WHERE (tipoDocumento =@idTipoDoc ) AND (nroDocumento =@nroDoc) ";
            List<SqlParameter> lstParametros = new List<SqlParameter>();
            lstParametros.Add(new SqlParameter("@idTipoDoc", tipo));
            lstParametros.Add(new SqlParameter("@nroDoc", nroDoc));
            SqlDataReader dr = DB.GenerarReader(comando, lstParametros, con);
            while (dr.Read())
            {
                if (dr["codPersona"] != DBNull.Value)
                {
                    SqlConnection con2 = DB.Conectar();
                    string comando2 = "SELECT  * FROM Paciente WHERE (idPersona = @codPersona ) ";
                    List<SqlParameter> lstParametros2 = new List<SqlParameter>();
                    lstParametros2.Add(new SqlParameter("@codPersona", dr["codPersona"]));
                    SqlDataReader dr2 = DB.GenerarReader(comando2, lstParametros2, con2);

                    while (dr2.Read())
                    {
                        if (dr2["nroAfiliado"] != null)
                        {


                            SqlConnection con3 = DB.Conectar();
                            string comando3 = "SELECT  * FROM Afiliacion WHERE (nroAfiliado = @nroAfiliado ) ";
                            List<SqlParameter> lstParametros3 = new List<SqlParameter>();
                            lstParametros3.Add(new SqlParameter("@nroAfiliado", dr2["nroAfiliado"]));
                            SqlDataReader dr3 = DB.GenerarReader(comando3, lstParametros3, con3);
                            while (dr3.Read())
                            {
                                if (dr3["nroAfiliadoTitular"] == DBNull.Value)
                                {
                                    af.nroAfiliado = Convert.ToInt64(dr3["nroAfiliado"]);

                                    af.idPlan = Convert.ToInt32(dr3["idPlan"]);

                                    nroAfiliado = af.nroAfiliado;
                                    bandera = false;
                                }
                                else
                                {
                                    af.nroAfiliado = Convert.ToInt64(dr3["nroAfiliado"]);
                                    af.nroAfiliadoTitular = Convert.ToInt64(dr3["nroAfiliadoTitular"]);
                                    bandera = false;
                                }

                            }
                            con3.Close();
                        }
                    }
                    con2.Close();
                }

            }
            if (bandera)
            {
                return null;
            }
            else
            {
                return af;
            }
            con.Close();


        }

        public String datosAfiliadoTitutlar()
        {
            string datos = "";
            if (nroAfiliado > 0)
            {
                SqlConnection con = DB.Conectar();
                string comando = "SELECT Afiliado.nroAfiliado, Persona.nombre, Persona.apellido FROM Afiliado INNER JOIN Paciente ON Afiliado.nroAfiliado = Paciente.nroAfiliado INNER JOIN Persona ON Paciente.idPersona = Persona.codPersona WHERE (Afiliado.nroAfiliado = @nroAfiliado)";
                List<SqlParameter> lstParametros = new List<SqlParameter>();
                lstParametros.Add(new SqlParameter("@nroAfiliado", nroAfiliado));
                SqlDataReader dr = DB.GenerarReader(comando, lstParametros, con);
                while (dr.Read())
                {
                    if (dr["nombre"] != null)
                    {
                        datos = dr["nombre"].ToString() + " " + dr["apellido"].ToString();
                    }
                }
            }

            return datos;
        }



    }
}
